﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;
namespace ECOSYSTEMPRESENTACION
{
    public partial class frmCliente : Form
    {
        public frmCliente()
        {
            InitializeComponent();
        }
        public Interfaz Manipular { set; get; }

        Cliente elCliente = new Cliente();
        ClienteBL elClienteBL = new ClienteBL();
        DateTime hora = DateTime.Now;
        public String NameFormulario;
        private Cliente obtenerObejetoCliente()
        {
            elCliente.NomCliente = txtNameCliente.Text;
            elCliente.RUCDNICLiente = txtRUCCliente.Text;
            elCliente.TelefCliente = txtPhoneCliente.Text;
            elCliente.DirecCliente = txtAdressCliente.Text;
            elCliente.FecRegCLiente = hora.ToShortDateString().ToString();
            return elCliente;
        }
        private Boolean GuardarCliente()
        {
            Cliente elCliente = obtenerObejetoCliente();
            elClienteBL.guardarCliente(elCliente);
            return true;
        }
        private Boolean ActualizarCliente()
        {
            Cliente elCliente = obtenerObejetoCliente();
            if (txtRUCCliente.Text == lblRUC_DNITempo.Text)
            {
                elClienteBL.ActualizarCliente(elCliente, Convert.ToInt32(lblCodigo.Text), "");
            }
            else
            {
                elClienteBL.ActualizarCliente(elCliente, Convert.ToInt32(lblCodigo.Text), txtRUCCliente.Text);
            }
            return true;
        }
        //llenar grilla
        private void LlenarGrillaDGVlistaCliente()
        {
            if (dgvListaCliente.DataSource == null)
            {
                dgvListaCliente.DataSource = elClienteBL.ObtenerClientes("Todos");
                filtrador.DataSource = elClienteBL.ObtenerClientes("Todos");
            }
        }
        //FILTRO PARA LA GRILLA
        private void AplicarFiltro()
        {
            int ret = filtrar_dgvListaProducto("Cliente", txtFiltrar.Text.Trim(), filtrador, dgvListaCliente);
            if (ret == 0)
            {
                txtFiltrar.BackColor = Color.Red;
            }
            else
            {
                txtFiltrar.BackColor = Color.White;
            }
        }
        private int filtrar_dgvListaProducto(String Columna, String texto, BindingSource Binding, DataGridView data)
        {
            if (filtrador.DataSource == null) { return 0; }
            try
            {
                String filtro = String.Empty;
                filtro = "LIKE '" + texto.Trim() + "%'";
                if (filtro != String.Empty)
                {
                    filtro = "[" + Columna + "]" + filtro;
                }
                Binding.Filter = filtro;
                data.DataSource = Binding.DataSource;
                return Binding.Count;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return 0;
        }
        //fin
        private void LimpiarCampos()
        {
            txtFiltrar.Text = "";
            txtNameCliente.Text = "";
            txtRUCCliente.Text = "";
            txtPhoneCliente.Text = "";
            txtAdressCliente.Text = "";
            dgvListaCliente.DataSource = null;
            lblCodigo.Text = "";
            btnNuevo.Enabled = true;
            btnBuscar.Enabled = true;
            btnGuardar.Enabled = false;
            btnActualizar.Enabled = false;
            btnCancelar.Enabled = false;
            groupBox3.Enabled = false;
            groupBox2.Enabled = false;
        }

        private void CerraFormulario(String NameForm) {
            if (Application.OpenForms[NameForm] != null)
            {
                this.Close();
            }        
        }
        private void PasarFormularios(String NameForm) {
            if (Application.OpenForms[NameForm] != null)
            {
                this.Manipular.CargarDatosCliente(txtNameCliente.Text, txtRUCCliente.Text, txtAdressCliente.Text);
                this.Close();
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            try
            {
                LimpiarCampos();
                CerraFormulario(NameFormulario);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                groupBox3.Enabled = true;
                LlenarGrillaDGVlistaCliente();
                btnCancelar.Enabled = true;
                btnNuevo.Enabled = false;
                btnBuscar.Enabled = false;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                GuardarCliente();
                PasarFormularios(NameFormulario);               
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            try
            {
                ActualizarCliente();
                dgvListaCliente.DataSource = null;
                MessageBox.Show("CLIENTE " + txtNameCliente.Text + " ACTUALIZADO CORRECTAMENTE");
                LimpiarCampos();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            try
            {
                groupBox2.Enabled = true;
                txtNameCliente.Select();
                btnNuevo.Enabled = false;
                btnBuscar.Enabled = false;
                btnGuardar.Enabled = true;
                btnCancelar.Enabled = true;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void txtFiltrar_TextChanged(object sender, EventArgs e)
        {
            AplicarFiltro();
        }

        private void dgvListaCliente_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            Int32 nroFila = Int32.Parse(e.RowIndex.ToString());
            txtNameCliente.Text = Convert.ToString(dgvListaCliente["Cliente", nroFila].Value);
            txtRUCCliente.Text = Convert.ToString(dgvListaCliente["RUC-DNI", nroFila].Value);
            txtPhoneCliente.Text = Convert.ToString(dgvListaCliente["Telefono", nroFila].Value);
            txtAdressCliente.Text = Convert.ToString(dgvListaCliente["Direccion", nroFila].Value);
            lblCodigo.Text = Convert.ToString(dgvListaCliente["ClienteID", nroFila].Value);
            lblRUC_DNITempo.Text = Convert.ToString(dgvListaCliente["RUC-DNI", nroFila].Value);
            groupBox2.Enabled = true;
            btnActualizar.Enabled = true;
        }
    }
}
